import Taro from '@tarojs/taro';
import {makeAutoObservable, runInAction} from 'mobx';
import http from '@/request'

// 定义地区数据类型
interface RegionData {
  childRegion?: RegionData[]; // 子地区数组
  fullName: string; // 全称
  name: string; // 名称
  pregion: number; // 父地区ID
  region: number; // 当前地区ID
  regionLevel: number; // 地区层级
  shortName: string; // 简称
}

interface ChinaAreasStore {
  chinaAreas: RegionData[]; // 中国地区数据
  loading: boolean; // 加载状态
  error: string | null; // 错误信息
  fetchChinaAreas: () => Promise<void>; // 异步获取地区数据
  updateChinaAreas: (chinaAreas: RegionData[]) => void; // 手动更新地区数据
}

// 从本地存储获取初始数据
const localData = Taro.getStorageSync('china-areas-local') || [] as RegionData[]
console.log('localData', localData)

class Store {
  data: ChinaAreasStore | null = localData && {};

  useChinaAreasStore = (data?: ChinaAreasStore) => {
    if (data) {
      return new Promise(resolve => {
        Taro.setStorageSync('china-areas-local',data)
        this.data = data;
        resolve(true)
      })
    } else {
      return http.get('/disp/sys/region/regionTree').then(res => {
        // 提取子地区数据，如果为空则使用空数组
        const areasData = res.data[0]?.childRegion || []
        Taro.setStorageSync('china-areas-local',areasData)
        runInAction(() => {
          this.data = areasData;
        })
      })
    }
  }
  constructor() {
    makeAutoObservable(this);
  }
}

export default new Store();
